方式一:
直接给src属性一个服务器端资源的地址,img控件会自动获取并解析资源。
方式二:
当访问的资源不在工程路径下时,想到的办法是通过返回给img控件字节流,让img控件解析,开始直接将ajax异步获取的字节流设给了img的src属性,发现无法显示图片,通过http://blog.csdn.net/doulinxu/article/details/59636710的指点,完成通过给src属性赋予字节数据来显示数据,大致为:字节流先在服务器端进行Base64编码,在输出前需要将MIME的字符串字节输出,代码如下:
@RequestMapping(value="viewDirect")
public void viewDirect(@RequestParam String url,HttpServletResponse response) throws Exception {
String filePath = baseDir + "/" + url;
File file = new File(filePath);
if (file.exists()&&file.isFile()) {
String suffix = url.substring(url.lastIndexOf("."), url.length());
if (suffix==null) {
return;
}
String metaType = "";
if (suffix.equalsIgnoreCase("jpg")||suffix.equalsIgnoreCase("jpeg")||suffix.equalsIgnoreCase("jpe")) {
metaType = "data:image/jpeg;base64,";
}else if (suffix.equalsIgnoreCase("gif")) {
metaType = "data:image/gif;base64,";
}else if (suffix.equalsIgnoreCase("bmp")) {
metaType = "data:image/bmp;base64,";
}else {
metaType = "data:image/jpeg;base64,";//默认解码方式,不合适
}
InputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();
// outputStream.write(metaType.getBytes());
// int length = -1;
// byte[] buffer = new byte[1024];
// while ((length=inputStream.read(buffer, 0, 1024))!=-1) {
// byte[] buf;
// if (length |